/*
 * Data.cpp
 *
 *  Created on: 20/08/2012
 *      Author: Manoela Camila
 */

#include "Data.h"


/*Método Construtor*/
Data::Data(int d, int m, int a): dia(d), mes(m), ano(a){}

/*Obtem Dia*/
int Data::getDia() const{
	return dia;
}

/*Obtem Ano*/
int Data::getAno() const{
	return ano;
}

/*Obtem mes em número*/
int Data::getMesN() const{
	return mes;
}

/*altera a data*/
void Data::setData(int d, int m, int a){
	dia = d;
	mes = m;
	ano = a;
}

/*Atributo que contém os meses em extenso*/
const std::string Data::textoMes[12] = {"janeiro", "fevereiro", "marco", "abril", "maio",
										 "junho", "julho", "agosto", "setembro", "outubro",
										 "novembro", "dezembro"};

/*Obtem mes em extenso*/
string Data::getMes() const
{
	return textoMes[mes-1];
}

/*retorna a data*/
Data Data::getData() const{

	return Data(dia, mes, ano);

}

/*pega a data do sistema*/
Data Data::getDataSistema(){

	time_t dataAtual;
	struct tm *data;

	time(&dataAtual);
	data = localtime(&dataAtual);

	return Data(data->tm_mday, data->tm_mon, data->tm_year+1900);
}

/*sobrecarga do operdador >> para ler uma Data*/
istream &operator>>(istream &o, Data &dt) {
	o >> dt.dia;
	o.ignore(1);
	o >> dt.mes;
	o.ignore(1);
	o >> dt.ano;
	return o;
}

/*sobrecarga do operador << para escrever uma Data*/
ostream &operator<<(ostream &o, const Data &dt){

	o << dt.dia << "/" << dt.mes << "/" << dt.ano;
	return o;
}

/*sobrecarga do operador ==*/
bool Data::operator==(const Data &dt) const{
	return(dia == dt.dia && mes == dt.mes && ano == dt.ano);
}

/*sobrecarga do operador !=*/
bool Data::operator!=(const Data &dt) const{
	return (dia != dt.dia || mes != dt.mes || ano != dt.ano);
}

/*sobrecarga do operador >=*/
bool Data::operator>=(const Data &dt) const{

	if (ano > dt.ano)
		return true;
	else if (ano == dt.ano && mes > dt.mes)
		return true;
	else if (mes == dt.mes && dia > dt.dia)
		return true;
	else if (ano == dt.ano && mes == dt.mes && dia == dt.dia)
		return true;
	else
		return false;
}

/*Sobrecarga do operador >*/
bool Data::operator>(const Data &dt) const{

	if (ano > dt.ano)
		return true;
	else if (ano == dt.ano && mes > dt.mes)
		return true;
	else if (ano == dt.ano && mes == dt.mes && dia > dt.dia)
		return true;
	return false;
}
